// 使用 express 来开启服务器

// 导入 express
var express = require('express')
// 创建 app 创建
var app = express()
// 导入 http 核心模块，并且使用 app 创建一个服务器
var http = require('http').createServer(app)
// 导入 socket.io，将 io 挂载到 http 对象中
var io = require('socket.io')(http)
// 将 views 托管为静态资源文件夹
app.use(express.static('views'))

// 设置请求的路径：
app.get('/', (req, res) => {
  // 返回 index.html 作为客户端
  res.sendFile(__dirname + '/views/index.html')
})

// 开启 weboscket
// 当有客户端连接上服务器时，会触发这个事件
io.on('connection', socket => {
  console.log('有用户连接上来了')
  // socket: 这个是连接上服务器的 socket 对象
  //    这个 socket 对象中包含了连接这个服务器的客户端的所有信息
  // on 事件就可以用来接收数据
  socket.on('sendval', val => {
    // val.msg
    // 这个函数就是接收到数据之后的回调函数
    console.log(socket)
    console.log('客户端发送的消息为:' + val.msg)
    // 将浏览器发送的消息，原样返回
    // 如果用 socket.emit 发送请求，它叫做：消息的回复
    // socket.emit('sendval', val)
    // 消息的广播
    io.emit('sendval', val)
  })
})

// 开启监听：端口 3000 ip 地址： localhost/127.0.0.1
http.listen(3000, () => {
  console.log('listening on *:3000')
})
